package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.ISocWebsiteDAO;
import org.jsola.hr.dto.SocWebsiteAddDTO;
import org.jsola.hr.dto.SocWebsiteUpdateDTO;
import org.jsola.hr.entity.SocWebsiteDO;
import org.jsola.hr.query.SocWebsiteQuery;
import org.jsola.hr.vo.SocWebsiteListVO;
import org.jsola.hr.vo.SocWebsiteVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 社保网站与类型
 *
 * @author zhr
 */
public interface ISocWebsiteService extends IService<ISocWebsiteDAO, SocWebsiteDO> {

    /**
     * 新增社保网站与类型
     * @param socWebsiteAddDTO 新增社保网站与类型DTO
     * @param tokenUser 当前用户
     * @return 社保网站与类型详情信息
     */
    SocWebsiteVO save(SocWebsiteAddDTO socWebsiteAddDTO, TokenUser tokenUser);

    /**
     * 修改社保网站与类型
     * @param socWebsiteUpdateDTO 修改社保网站与类型DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(SocWebsiteUpdateDTO socWebsiteUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除社保网站与类型，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param socWebsiteIds 社保网站与类型id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, Long...socWebsiteIds);

    /**
     * 根据社保网站与类型id查找
     * @param socWebsiteId 社保网站与类型id
     * @param siteId 所属站点id
     * @return 社保网站与类型详情信息
     */
    SocWebsiteVO selectById(Long socWebsiteId, String siteId);

    /**
     * 查询社保网站与类型
     * @param socWebsiteQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保网站与类型列表信息
     */
    List<SocWebsiteListVO> select(SocWebsiteQuery socWebsiteQuery, String siteId);

    /**
    * 查询社保网站与类型记录数
    * @param socWebsiteQuery 查询条件
    * @param siteId 所属站点id
    * @return 社保网站与类型记录数
    */
    int selectCount(SocWebsiteQuery socWebsiteQuery, String siteId);

    /**
     * 分页查询社保网站与类型
     * @param socWebsiteQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保网站与类型列表信息
     */
    Page<SocWebsiteListVO> selectPage(SocWebsiteQuery socWebsiteQuery, String siteId);


    /**
     * 根据社保网站与类型id查找
     * @param socWebsiteId 社保网站与类型id
     * @param siteId 所属站点id
     * @return 社保网站与类型
     */
    SocWebsiteDO selectDOById(Long socWebsiteId, String siteId);

    /**
     * 查询社保网站与类型
     * @param socWebsiteQuery 查询条件
     * @param siteId 所属站点id
     * @return 社保网站与类型列表
     */
    List<SocWebsiteDO> selectDO(SocWebsiteQuery socWebsiteQuery, String siteId);

    /**
     * 查询所有无站点
     * @param isDistinct 是否去重
     * @return 录入的可以同步社保的城市
     */
    List<SocWebsiteDO> listAllNotSitId(Boolean isDistinct);

    /**
     * 根据地区Id查找社保网站
     * @param areaId 地区Id
     * @return 地区内的社保网站
     */
    List<SocWebsiteDO> selectWebSiteByAreaId(String areaId);
}


